package com.leesche.zcsp.node.web.dao;

import java.util.List;

import com.leesche.zcsp.node.web.model.SysRole;
import com.leesche.zcsp.node.web.model.SysRoleCriteria;
import com.leesche.zcsp.node.web.model.SysUser;
import com.leesche.zcsp.node.web.service.impl.data.read.QuerySysRoleCondition;
import com.leesche.zcsp.node.web.service.impl.data.read.SysRoleDto;
import com.leesche.zcsp.node.web.service.impl.data.read.SysUserDto;

/**
 * @Title: SysRoleDao.java
 * @Description: TODO(杩欓噷鐢ㄤ竴鍙ヨ瘽鎻忚堪杩欎釜绫荤殑浣滅敤)
 * @author 闄堢珛鍕�
 * @date 2016骞�9鏈�14鏃� 涓婂崍11:02:35
 * @version V1.0
 */
public interface SysRoleDao
		extends
		BaseDao<SysRole, SysRoleCriteria, SysRoleDto, QuerySysRoleCondition, Long> {

	/**
	 * 
	 * @Title: selectByParentTree 
	 * @Description: TODO(获取系统角色父级树节点) 
	 * @author Jerry Chen
	 * @date 2016年10月2日 下午9:03:11
	 * @return 系统角色父级树节点
	 */
	List<SysRole> selectByParentTree();
	
	/**
	 * 
	 * @Title: selectByRoleNtypes 
	 * @Description: TODO(根据用户NTYPE获取对应的角色类型) 
	 * @author Jerry Chen
	 * @date 2016年10月9日 上午10:40:29
	 * @param sysUser
	 * @return 角色集合
	 */
	List<SysRole> selectByRoleNtypes(List<SysUser> sysUser);
	
	/**
	 * 
	 * @Title: selectByRoleNtypes
	 * @Description: TODO(根据用户NTYPE获取可分配的角色信息列表) 
	 * @author Jerry Chen
	 * @date 2016年10月9日 上午10:40:29
	 * @param sysUser
	 * @return 角色信息列表
	 */
	List<SysRole> selectByDifferentUser(SysUserDto sysUserDto);

	/**
	 * 
	 * @Title: countRoleTotal 
	 * @Description: TODO(计算系统角色的数量) 
	 * @author Jerry Chen
	 * @date 2016年10月12日 下午7:24:27
	 * @return 统角色的总数量
	 */
	int selectRoleTotal();

	/**
	 * @Title:  selectChildRoleByBusinessUser(Long userid)
	 * @Description: TODO( 根据商业用户的ID获取其下子账户的角色 )
	 * @author Jerry
	 * @date 2016-10-19 10:51:02
	 * @param userid 商业用户的ID
	 * @return 子账户的角色集合
	 */
	List<SysRole> selectChildRoleByBusinessUser(Long userid);

	/**
	 * @Title: insertBatch(List<SysRole> roles)
	 * @Description: TODO( 批量添加角色 )
	 * @author Jerry Chan
	 * @date 2017/1/3 17:09
	 * @return
	 */
	int insertBatch(List<SysRole> roles);

	/** 
	 * @Title: selectChildRoleByCondition(QuerySysRoleCondition condition)
	 * @Description: TODO( 根据查询条件获取子角色信息集合 )
	 * @author Jerry Chan
	 * @date 2017/1/5 17:14
	 * @return  子角色信息集合
	 */
	List<SysRole> selectChildRoleByCondition(QuerySysRoleCondition condition);

	
}